Perforce QAC QA·CLI Changes in 2025.3
Pre-processed source (.i) is now automatically generated when assembling support analytics archive
- Command:
qacli analyze ‑a | ‑‑assemble‑support‑analytics
- Old Behavior: For the archive to include pre-processed source the additional option
‑g|‑‑generate‑preprocessed‑source
had to be explicitly specified. This forced pre-processed source generation for all files processed during analysis. - New Behavior: When this option is specified and a file fails analysis (and the
‑g
flag is NOT set), it will re-analyze the file, this time including pre-processed source output. There is obviously no need to re-analyze if-g
flag is set. The.arc
,.via
and.i
are then zipped up.
Duplicates are now removed from collated outputs
- Command:
qacli view ‑‑collate‑output | ‑c
- Old Behavior: When outputting results, rather than mirror the directory structure of the source code tree, collate all output into a single directory.
- New Behavior: The output is now produced into sub-directories whose name is derived from the parent directory and a hash of the path (eg “src-956e645e4e0591b2cafa“). This allows us to ensure there are no duplicate files in a directory whilst minimizing the path length.
Output directory path sizes can now be minimized
- Command: All
- Old Behavior: The output directory hierarchy is mirrored from the source directory hierarchy. For Windows systems, which are limited to 260 characters by default this could cause a failure during analysis.
- New Behavior: A new environment variable has been introduced,
QAC_MIN_OUTPUT_DIR
, which if set, will flatten the directory hierarchy and reduce the chances of breaching the 260 char limit.
CCTs can now be generated even if qainject fails
- Command:
qacli sync ‑‑type INJECT ‑‑generate‑cct ‑‑force|‑f
- Old Behavior: If qainject failed during a synchronisation then no CCT was generated.
- New Behavior: If the
‑‑force|‑f
option is specified and the INJECT synchronisation fails then the CCTs will be created - assuming enough information is available.
Redundant path decorators are now automatically removed
- Command:
qacli project roots ‑‑path <path>
- Old Behavior: Paths were added verbatim.
- New Behavior: Paths are now canonical and any trailing path separators are removed (eg
C:\foo\.
becomesC:\foo
)
Explicit encoding can now be specified for Validate build and cibuild commands
- Command:
qacli validate build | cibuild ‑‑encoding|‑E <encoding type>
- Old Behavior: Not available. No explicit encoding could be set.
- New Behavior: Explicit encoding can now be specified for these commands.
Fixed issue where project roots were not respected
- Command:
project roots -P <dir> ‑A SOURCE_ROOT ‑‑path <path>
- Old Behavior: Roots that were added to the
prqa/qa-framework-app.xml
file (i.e. without the‑‑force
option) and later referenced in theprqaproject.xml
were not respected. - New Behavior: The file
prqa/qa-framework-app.xml
is now read before theprqaproject.xml
file and any local roots in that file will be respected.
qacli now returns an error if an invalid sub-command is specified
- Command:
qacli validate XXX | qacli config XXX | qacli project XXX
- Old Behavior: For qacli commands with sub-commands (
validate
,config
, andproject
), if an invalid sub-command was specified it would be accepted, do nothing and return 0 (success). - New Behavior: If an invalid sub-command is specified then an error will be reported and return 1 (CLI Parse Failure).